#include "params.h"

//Which wave function we're using
static WaveFunctionEnum waveFunctionToUse = kWaveFunctionNone;

//**********************
//McMillan Wave function
//**********************
//Explicit parameters
double alphaMcMillan = 0.3*.529177;
double nu = 5.2;
double b = 2.95/.529177;

//Derrived parameters;
double c00 = 0.0;
double c01 = 0.0;
double c02 = 0.0;
double c10 = 0.0;
double c11 = 0.0;
double c12 = 0.0;
double c20 = 0.0;
double c21 = 0.0;
double c22 = 0.0;

//Parameters of default wave function
double p0 = 3010.0;
double p1 = 0.322;
double p2 = 0.167;
double p3 = 0.040;
double p4 = 0.0;

//Parameters of potential energy
double rm = 5.599258;
double A = 184431.01;
double alphaPotential = 10.433295;
double beta = -2.279651;
double epsilon = 3.466941e-5;
double c6_pot = 1.367452;
double c8_pot = 0.421238;
double c9_pot = 0.0;
double c10_pot = 0.174733;
double D = 1.482600;

void setWaveFunction(WaveFunctionEnum wave)
{
  waveFunctionToUse = wave;
}

WaveFunctionEnum getWaveFunction()
{
  return waveFunctionToUse;
}

void derriveParameters()
{
  c00 = -0.5 * pow(b, nu);
  c01 = -nu * c00;
  c02 = -(nu + 1.0) * c01;
  
  c10 = -nu;
  c11 = -(nu + 1.0);
  c12 = -(nu + 2.0);

  c20 = -(alphaMcMillan * alphaMcMillan / (gXDim * gYDim * gZDim) * 0.5);
  c21 = c20 * 2.0;
  c22 = c21;
}

